1. Field of the Invention
The present invention relates to the field of computer graphics, and, more specifically, to a method and apparatus for synchronizing the concurrent display of computer-generated scenes on multiple video display devices.
2. Description of the Related Art
One of the primary goals of many computer graphics systems is that of visual realism. The quest for visual realism involves many facets, including modeling the complex ways in which light interacts with objects in the real world. Understandably, there are many limitations on the amount of realism that current graphics systems are capable of producing. Many of the recent advances in computer graphics systems are attempts to overcome or lessen some of the fundamental limitations of computer graphics.
One such limitation is that images representing three-dimensional objects in the real world are ultimately rendered on a two-dimensional screen. Although such techniques as perspective viewing provide depth cues to the human eye, graphics system capable of stereo display have been developed. Stereo systems render two or more views of an object on a display device. The viewer, with the aid of specialized glasses, ultimately sees a single fused image. This conveys a powerful depth cue to the human eye, thus increasing the realism of the viewed object.
Another limitation of computer graphics is that a display device typically only subtends a relatively small portion of the viewer's field of vision. For certain applications, then, even a very realistic image may not produce the effect that the viewer is actually immersed in the scene. This is particularly true of simulation environments in which it is necessary to generate images for the entire range of the viewer's field of vision.
This broad field of vision is essential in an application such as a flight simulator. Accordingly, flight simulator systems are typically designed using multiple video display devices, with each display device displaying a different view of a particular scene. Such a system is shown in FIG. 1.
FIG. 1 depicts a simulation environment 10. Simulation environment 10 includes display devices 20A-C (referred to collectively as display devices 20) arranged about a viewer. Each of display devices 20 is designed to display a different view of a given scene. In the case of a flight simulator system, display 20A may represent the view out of the left side of the cockpit window, display 20B may represent the forward view, and display 20C may represent the view out of the right side of the cockpit window. Various other arrangements of display devices 20 are possible in other embodiments.
Simulation environment 10 further includes graphics accelerators 40A-C and video cables 30A-C. Each of graphics accelerators 40 is coupled to a respective one of display devices 20 by a corresponding one of video cables 30. Each view of the given scene is drawn (or "rendered") by a dedicated graphics accelerator 40 on one of display devices 20.
An important attribute of a multi-display system such as simulation environment 10 is that the displays be synchronized during window updates. A window update occurs in simulation environment 10 when all displays are to switch to displaying a new graphical image corresponding to the next scene. Consider the case of a flight simulator program which is displaying a landscape on display devices 20. If the flight simulator program is about to change the scene (to display an explosion, for example), each graphics accelerator 40 begins converting pixel data corresponding to the next scene to a video output signal on one of video cables 30. Each corresponding display device 20 displays a view of the next scene according to the new video signal which is received. If graphics accelerators 40 are not synchronized when beginning generation of the new video signal corresponding to the next scene, undesirable visual effects may result. For example, if the explosion in the next scene is supposed to occur to the left of the cockpit, the explosion should not first be seen in display device 20C. This may occur in systems which lack proper synchronization.
One method utilized by prior art systems to achieve synchronization is concurrently drawing the same scene using two or more viewpoints. Typically, software performs multiple passes of drawing the same scene, with the pixel data from each vantage point written to different portions of display memory (commonly referred to as frame buffer memory). When all views have been written into frame buffer memory, the controlling hardware or software issues a command or signal to switch the scene shown on the various displays.
Another approach is to use parallel systems (each with independent hardware and software) to concurrently render the various images for each display. Networking is used to communicate between systems that drawing has completed for a particular scene. When all scenes are complete, each system switches its respective display.
Both of these approaches are subject to race conditions, however. For example, a command issued by controlling hardware or software to switch to the next scene may be executed during one vertical scan for one display, and during the next vertical scan for a different display. This leads to visual artifacts, which are particularly undesirable in high-performance applications such as flight simulators.
A computer system which ensures the synchronization of multiple computer displays during scene switching would therefore be desirable.